Modern computer systems generally include at least one processor for processing computer instructions and a memory system that stores the instructions and data processed by the processor. (Note that ‘computer system’ is a broad class of devices that includes any device with a process and memory such as personal computer systems, cellular telephones, embedded control systems within personal electronics, servers, etc.) The memory system of a computer system may be implemented with discrete memory chips or as memory cells fabricated on the same integrated circuit as the processor. Most personal computer systems use a combination of both memory cells fabricated on the same die as the integrated circuit as the processor and external off-chip memory.
When designing a computer system, the computer system designer will specify a memory system with a defined set of memory system characteristics. These memory system characteristics may include metrics such as total memory capacity, memory bus width, and memory speed. Once the requirements for a memory system are defined, the computer system designer then designs a memory system that fulfills the requirements.
To construct an on-chip memory system, an integrated circuit designer couples many individual memory cell circuits together to form a memory array. Then, the integrated circuit designer provides support circuitry that address memory cells within the array and read or write data bits into those memory cells.
Creating an efficient high-performance on-chip memory system is a difficult task that generally requires a team of engineers. However, many integrated circuits do not require the optimal performance from on-chip memory systems. For such integrated circuits, an integrated circuit designer may use a physical memory compiler tool that can provide an “off-the-shelf” memory module. Specifically, the integrated circuit designer provides the physical memory compiler tool with a set of desired memory system characteristics and the physical memory compiler tool generates a memory design that can be used within the integrated circuit. This technique reduces development time and development cost.
However, the performance of memory modules created by physical memory compilers tends to be limited. Furthermore, the memory modules created by physical memory compilers generally do not efficiently use valuable layout area. Thus, it would be desirable to improve the techniques and tools used to design and construct memory systems for integrated circuits.